======================================================
MPPWC v0.96.6: a Tracker Module Decoder for Winamp
Released: Nov 18, 2013
Author: Dios Gabor (Dege)
======================================================

1. Intro
--------

Recently I totally revamped my old music player originating in the DOS era that
was planned to be used for some demoscene stuffs. Needless to mention that
finally I (we) have never released anything to any scene party, but the code
was being more or less maintained.
A few month ago I decided to port it to "thin" C++ and partly assembly using
modern things, just for fun. The evergreen pain were the things missing in
supporting of Impulse Tracker files (>v2.0 with compressed samples, resonant
filtering, and as I looked around I found that many of new IT songs exist that
use stereo samples and a few unofficial additions to the IT format).
I think I've overcome most of them (wasn't easy to find info on those since
Jeffrey Lim never published that in his technical descriptions as far as I know).

Altough creating a Winamp plugin was not the goal, but when I finished I thought
why not..


2. Features
-----------

So, MPPWC is an input plugin for Winamp to decode the following
tracker formats:

Amiga ProTracker (*.mod)
Composer 669	 (*.669)
MultiTracker	 (*.mtm)
Scream Tracker3  (*.s3m)
Fast Tracker 2	 (*.xm)
Impulse Tracker	 (*.it)

with true seeking during music playback.

About length detection of module playing time:
There are 2 choices:
- Disabling backward jumps: this option does not allow any loop in the
                            playback, you can listen hidden parts of the song
                            (but not all of them if they are organized
                             unluckily..)

- Detect loop: when MPPWC detects the end of a loop, marks that point as the end
               of the song but MPPWC can be configured to repeat loops.


3. Requirements
---------------

Any x86 processor with SSE2 support (it is old enough to dare require it as a
minimum).

Does 64 bit Winamp exist? I also have the x64 version of the decoder. :)


4. Installing MPPWC "by hand"
-----------------------------

Well, just copy in_mppwc.dll into your Winamp\Plugins folder then restart Winamp
and it should work.


5. Uninstalling MPPWC "by hand"
-----------------------------

Delete these files:

	Winamp\Plugins\in_mppwc.dll
	Winamp\Plugins\in_mppwc.txt


6. Known issues
---------------

- MPPWC may not cooperate well with Winamp's built-in module decoder (in_mod.dll).
  I mean this can cause crashes as they support common file types.

- klisje.mod: Solved, see 'Old Protracker Mode'


7. Thanksto's
---------------

Thanks to Chris Benshoof for his mini crt, I built MPPWC using that great stuff.
For more see: http://www.benshoof.org/blog/minicrt/


8. Change list
---------------

0.96.6: - Impulse Tracker volume column commands were displayed incorrecty
          (always seeing command Ax), fixed
        - Impulse Tracker volume column tone portamento were handled incorrectly
          with non-NoteCut New Note Actions, fixed
        - Impulse Tracker 'Compatible Gxx' flag were misinterpreted so it caused
          mishandled portamento parameter sharing and flag-related features
          (like restarting envelopes), fixed
        - Handling doubled commands (command given in volume column and effect
          column simultaneously) in Impulse Tracker is reverse engineered, much
          more accurate handling of them in the decoder
        - Vibrato waveform was inverted, fixed

0.96.5: - Minor panning bug related to IT pan swing is fixed

0.96.4: - Bad handling of keyoff+intrument pair in XMs, fixed
        - Bug in IT channel allocator, fixed

0.96.3: - Annoying crashes on extended .669 commands (Unis 669) are fixed
        - Potential crash related to sustain sample loop in IT files is fixed
          (e.g. xpv98.it)
        - There were rather annoying things about XM files (dunno what tracker
          were saved with), now supported:

          - more than 32 tracks
          - using larger than 255 BPM as initial tempo
          - unsaved empty instruments in file
        - Name of intruments without samples in XM files are shown now in file
          info dialog
        - A tiny extra: you can mute tracks, just click on the ordinal of the
          track you would like to mute in the file info dialog

0.96.2 were intended to be the last version, but as now, I will release new
versions when I fix something in the decoder for any reason.

0.96.2: - Signal normalization which is the default now (it is not perfect but
          works much better than the old simple algorithm)
        - Fixing Tone Portamento on stopped channels in S3Ms and ITs
        - Minor GUI improvements

0.96.1: - Fixed TonePorta+VolSlide
        - Fixed 'Set Global Volume' command in S3Ms
        - Fixed detecting of empty patterns
        - Fixed bugs in GUI (mostly cosmetic)

0.96:	- Missing features implemented: IT instrument volume & pan swing
        - Random wave vibrato/tremolo/panbrello didn't work, fixed
        - When a note off/note fade with an instrument were given together
          then IT files played improperly (e.g. ocean_breeze.it), fixed
        - Number of handled IT instruments/samples is raised to 199 to play (some)
          nonregular IT files properly
        - Scale of tremolo is fixed in S3M/IT files
        - Handling 16 bit samples is fixed in the S3M loader
        - Lack of supporting FT2 command Lxx (Set Volume envelope position),
		  implemented
        - Fixed FT2 command Kxx (Key Off)
        - Fixed simultaneous arpeggio+portamento
        - Saving plugin settings now follows the recommended folder to use
        - Uninstall support for the plugin
        - File info dialog is somewhat more advanced compared to previous versions
          [all that gui crap has turned this plugin into a big fat monster :( ]
        - New plugin config options:
             - Mixing freq, output quality
             - Optional remove of initial and trailing silence (not the same as
			   trailing empty patterns)
             - Old Protracker mode (very first version of Protracker capable of
			   constant tempo at 125 BPM, play klisje.mod with this
                           option enabled :) )
        - Lot of other fixings, I hope I have not broken anything working properly
          before

0.95:	- A serious bug of handling IT instrument envelopes is fixed
        - Fixing the usage of 'last nonzero effect parameter' in S3M's, it was
          buggy
        - Fixing the 'Retrig and Volume Slide' effect to match ST3, FT2 and IT
        - Resonant filter is slightly modified to match Impulse Tracker better
        - A bug in the mixer is fixed: it couldn't handle the over-amplficiation
          when large resonance values were used; amplification interval is widened
        - A bug in detecting loops is fixed (ehh.. uninitialized variable..)
        - Backward seeking could cause incorrent playing speed, fixed
        - Random memory content could be attached to the title of 669's, fixed
        - Option 'Strip ending empty patterns' is added to the config dialog
        - 'Volume amplification' is added to the config dialog

0.94:	The original version


Enjoy!
	Dege
